package main

import "fmt"

// Go语言中的运算符
func main() {
	// 1. 算术运算符
	a := 10
	b := 20
	fmt.Println(a + b)
	fmt.Println(a - b)
	fmt.Println(a * b)
	fmt.Println(a / b)
	fmt.Println(a % b)
	// 2. ++  --  和其他语言一样
	// 3. 关系运算符
	fmt.Println(10 > 2)
	fmt.Println(10 != 2)
	fmt.Println(10 < 2)
	// 4. 逻辑运算符 && || ! 和其他语言一样
	// 5. 位运算符
	// & 参与运算的两数各对应的二进位相与（两位均为1才为1）
	// | 参与运算的两数各对应的二进位相或（两位有一个为1就为1）
	// ^ 参与运算的两数各对应的二进位相异或。当两对应的二进位相异时，结果为1（两位不一样为1）
	// << 左移n位就是乘以2的n次方。 “a << b 是把a的各二进位全部左移b位，高位丢弃，低位补0”
	// >> 右移n位就是除以2的n次方。 “a >> b 是把a的各二进位全部右移b位”
	c := 1              // 001
	d := 5              // 101
	fmt.Println(c & d)  // 001 => 1
	fmt.Println(c | d)  // 101 => 5
	fmt.Println(c ^ d)  // 100 => 4
	fmt.Println(6 << 2) // 100 => 4
	fmt.Println(4 >> 2) // 001 => 1
}
